/**
 * 
 */
package com.lgCore.rpc.common.codec;

import com.lgCore.util.ByteObjUtil;
import com.lgCore.util.ByteUtil;
import io.netty.buffer.ByteBuf;
import io.netty.channel.ChannelHandlerContext;
import io.netty.handler.codec.MessageToByteEncoder;

/**
 * 编码
 * @author ligang
 *
 */
public class CommonRpcEncoderHandler extends MessageToByteEncoder<byte[]> {

	@Override
	protected void encode(ChannelHandlerContext ctx, byte[] message, ByteBuf byteBuf)
			throws Exception {
		try{
			ByteBuf buffer = ctx.alloc().buffer();
			//分隔符
//			byte[] lineBytes =System.getProperty("line.separator").getBytes();
			byte[] lineBytes = new byte[1];
			lineBytes[0]= 0x02;
			//内容长度 6位数
			byte[] dataSizeBytes = new byte[6];
			//内容
//			byte[] dataByte = CommonRpcCodecs.getEncoder(CommonRpcCodecs.KRYO_CODEC).encode(message);
//			byte[] dataByte= (byte[]) message;
			//组装长度
			byte[] lengthBytes = ByteUtil.int2Bytes(message.length);
			for(int i=0;i<lengthBytes.length;i++){
				dataSizeBytes[i]=lengthBytes[i];
			}
			//组合
			byte[] send = ByteUtil.byteMerger(ByteUtil.byteMerger(lineBytes,dataSizeBytes),message);
			buffer.writeBytes(send);
			ctx.write(buffer);
		}catch (Exception e){
			e.printStackTrace();
		}

	}
}
